﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class УчетЗатрат
	{
		///////////////////////////////////////////////////////////////////////////////
		// ЭКСПОРТНЫЕ ПРОЦЕДУРЫ ПРОВЕДЕНИЯ
		// Формирует движения по распределению затрат по количеству.
		//
		// Параметры:
		//  СтруктураШапкиДокумента - Структура,
		//               подготовленная в документе РасчетСебестоимостиВыпуска
		//
		// Изменяемые параметры:
		//  Отказ - устанавливается в Истина, если при распределении выявлена критичная ошибка
		//

		public void РаспределитьЗатраты(/*СтруктураШапкиДокумента, Отказ*/)
		{
			if(true/*Отказ*/)
			{
			}
			//ВыполнитьРаспределениеЗатрат(СтруктураШапкиДокумента, Отказ);
		}
		///////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ РАСПРЕДЕЛЕНИЯ ЗАТРАТ
		// Выполняет распределение затрат по установленным правилам распределения.
		//
		// Параметры:
		//  СтруктураШапкиДокумента - Структура,
		//               подготовленная в документе РасчетСебестоимостиВыпуска
		//
		// Изменяемые параметры:
		//  Отказ - устанавливается в Истина, если при распределении выявлена критичная ошибка
		//

		public void ВыполнитьРаспределениеЗатрат(/*СтруктураШапкиДокумента, Отказ*/)
		{
			/*// Для отладки будем вести протокол
*/
			/*ОтладочныйРежим = СтруктураШапкиДокумента.Свойство("ОтладочныйРежим")
	                  И СтруктураШапкиДокумента.ОтладочныйРежим;*/
			//Протокол = Новый Массив;
			//УчетнаяПолитика         = СтруктураШапкиДокумента.УчетнаяПолитика;
			//НастройкаЗакрытияМесяца = СтруктураШапкиДокумента.НастройкаЗакрытияМесяца;
			//ПараметрыЗапросов = Новый Структура;
			//ПараметрыЗапросов.Вставить("ДатаНачала",    СтруктураШапкиДокумента.мНачДата);
			//ПараметрыЗапросов.Вставить("ДатаОкончания", СтруктураШапкиДокумента.мКонДата);
			//ПараметрыЗапросов.Вставить("СчетаЕНВД",     СчетаЕНВД());
			/*// Получим информацию о правилах распределения затрат.
*/
			//ПравилаРаспределенияЗатрат = ИнициализироватьПравилаРаспределения();
			//СоздатьПравилоУчитыватьЗатратыНаОбобщенныхСтатьях(ПравилаРаспределенияЗатрат, УчетнаяПолитика);
			//СоздатьПравилоПереносНаОблагаемыеЕНВД(ПравилаРаспределенияЗатрат, УчетнаяПолитика);
			//СоздатьПравилоПереносНаПрямыеРасходы(ПравилаРаспределенияЗатрат, УчетнаяПолитика);
			//СоздатьПравилаРаспределенияЗатратПоНастройке(ПравилаРаспределенияЗатрат, НастройкаЗакрытияМесяца);
			//СоздатьПравилоДиректКостинг(ПравилаРаспределенияЗатрат, УчетнаяПолитика);
			//СоздатьПравилоБракВПроизводстве(ПравилаРаспределенияЗатрат);
			//СоздатьПравилоРасходыНаПродажу(ПравилаРаспределенияЗатрат);
			/*// Правило для списания расходов 44, которые не удалось распределеить
*/
			/*// Исключение - транспортные расходы (их оставляем как есть)
*/
			//СоздатьПравилоСписатьНераспределенныеРасходыНаПродажу(ПравилаРаспределенияЗатрат);
			if(true/*ПравилаРаспределенияЗатрат.Количество() = 0*/)
			{
				/*//Отсутствие правил не является препятствием к проведению документа
*/
			}
			/*// Получим базу распределения затрат для каждого правила распределения
*/
			/*// Сформируем вспомогательную структуру, содержащую информацию о всех аналитиках учета затрат.
*/
			/*// Ключ структуры - имя аналитики, значение - описание допустимых типов этой аналитики.
*/
			//СтруктураРазрезовАналитики = Новый Структура;
			//СтруктураРазрезовАналитики.Вставить("АналитикаВидаУчета",           Новый ОписаниеТипов("СправочникСсылка.КлючиАналитикиВидаУчета"));
			//СтруктураРазрезовАналитики.Вставить("АналитикаУчетаЗатрат",			Новый ОписаниеТипов("СправочникСсылка.КлючиАналитикиУчетаЗатрат"));
			//СтруктураРазрезовАналитики.Вставить("АналитикаРаспределенияЗатрат",	Новый ОписаниеТипов("СправочникСсылка.КлючиАналитикиРаспределенияЗатрат"));
			//СтруктураРазрезовАналитики.Вставить("АналитикаУчетаПартий",         Новый ОписаниеТипов("СправочникСсылка.КлючиАналитикиУчетаПартий"));
			/*// Одни и те же затраты можно распределить только по одному правилу.
*/
			/*// Поэтому 
*/
			/*//  - будем записывать, какие затраты уже распределили
*/
			/*//  - не будем распределять затраты повторно, больше одного раза
*/
			//РаспределенныеЗатраты = Новый ТаблицаЗначений;
			/*// коллекция колонок таблицы соответствует СтруктураРазрезовАналитики
*/
			//РаспределенныеЗатраты.Индексы.Добавить("АналитикаВидаУчета, АналитикаУчетаЗатрат, АналитикаРаспределенияЗатрат, АналитикаУчетаПартий");
			//ПорядокПравила 		 = 1;
			//СформированоЗаписей  = -1;
			/*// в счетчик запишем ненулевое значение для первого выполнения итерации
*/
			//КоличествоИтераций   = 0;
			//Регистр = РегистрыНакопления.УчетЗатратРегл;
			/*// Создадим набор записей в котором будет отражено распределение
*/
			//НаборЗаписейУчетЗатрат = Регистр.СоздатьНаборЗаписей();
			//НаборЗаписейУчетЗатрат.Отбор.Регистратор.Установить(СтруктураШапкиДокумента.Ссылка);
			//СхемаКомпоновкиДанныхИсточника = Регистр.ПолучитьМакет("ОписаниеРаспределяемыхЗатрат");
			/*// Выполняем распределение до тех пор, пока в очередной итерации не будет сформировано ни одной записи распределения.
*/
			while(true/*СформированоЗаписей <> 0*/)
			{
				//КоличествоИтераций = КоличествоИтераций + 1;
				//СформированоЗаписей  = 0;
				//ЗаписатьВПротокол("Итерация " + КоличествоИтераций, Протокол);
				/*// по правилу
*/
			}
			/*// по итерации
*/
			/*УчестьОценкуНезавершенногоПроизводства(
		СтруктураШапкиДокумента.Период, 
		СтруктураШапкиДокумента.Организация, 
		СтруктураШапкиДокумента.Ссылка, 
		Регистр);*/
			/*УчестьТранспортныеРасходыОтносящиесяКОстаткуНереализованныхТоваров(
		СтруктураШапкиДокумента,
		Регистр);*/
		}
		// Корректирует движения, сформированные при распределении затрат -
		// должны быть распределены не все затраты, часть затрат должна остаться в НЗП
		//

		public void УчестьОценкуНезавершенногоПроизводства(/*Период, Организация, Регистратор, Регистр*/)
		{
			//МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
			/*// Получим данные документов "Оценка незавершенного производства"
*/
			/*// Создаем временную таблицу ОценкаНезавершенногоПроизводства
*/
			/*Документы.ОценкаНезавершенногоПроизводства.ПоместитьДанныеДляРеглУчетаВоВременнуюТаблицу(
		МенеджерВременныхТаблиц, 
		Организация, 
		Период);*/
			/*// Убедимся, что вообще что-то нужно оставлять в НЗП
*/
			/*Запрос = Новый Запрос(
	"ВЫБРАТЬ ПЕРВЫЕ 1 
	|	ОценкаНезавершенногоПроизводства.ДоляЗатрат
	|ИЗ
	|	ОценкаНезавершенногоПроизводства КАК ОценкаНезавершенногоПроизводства"
	);*/
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			//РезультатЗапроса = Запрос.Выполнить();
			if(true/*РезультатЗапроса.Пустой()*/)
			{
				/*// Ничего не надо оставлять в НЗП
*/
			}
			/*// Найдем движения по распределению затрат оттуда, где нужно что-то оставить в НЗП.
*/
			/*// Оставить в НЗП нужно производственные расходы по тем подразделениям и НГ, что указаны в ОценкаНезавершенногоПроизводства.
*/
			/*//
*/
			/*// Сразу одним запросом мы не можем выбрать только нужные затраты - выберем их с избытком:
*/
			/*//  - по тем подразделениям, где следует оставить НЗП (для этого нужен первый запрос пакета)
*/
			/*//  - но по всем НГ
*/
			/*// Позднее отсечем лишнее.
*/
			/*//
*/
			/*// Важно: нужно исключить из выборки распределение затрат между состояними,
*/
			/*// в которых нужно что-то оставить в НЗП.
*/
			/*// Т.е. выборка должна содержать только распределение затрат "наружу".
*/
			/*// Для этого нужен третий запрос пакета.
*/
			/*//
*/
			/*// При подготовке таблицы ЗатратыУчаствовалиВРаспределении используем ЛЕВОЕ СОЕДИНЕНИЕ,
*/
			/*// так как затраты могут быть распределены ИЗ контура учета затрат, а в этом случае
*/
			/*// ключи кор. аналитики имеют "нестандартные" типы.
*/
			/*// 
*/
			/*Запрос = Новый Запрос(
	"ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ОценкаНезавершенногоПроизводства.Подразделение КАК Подразделение
	|ПОМЕСТИТЬ ПодразделенияНЗП
	|ИЗ
	|	ОценкаНезавершенногоПроизводства КАК ОценкаНезавершенногоПроизводства
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Подразделение
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	УчетЗатратРегл.АналитикаВидаУчета,
	|	УчетЗатратРегл.АналитикаУчетаЗатрат,
	|	УчетЗатратРегл.АналитикаУчетаПартий,
	|	УчетЗатратРегл.АналитикаРаспределенияЗатрат,
	|	СУММА(УчетЗатратРегл.Количество) КАК Количество,
	|	СУММА(УчетЗатратРегл.КоличествоНУ) КАК КоличествоНУ,
	|	РасшифровкаВидаУчета.ПодразделениеОрганизации КАК Подразделение,
	|	РасшифровкаРаспределенияЗатрат.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
	|	УчетЗатратРегл.КорАналитикаВидаУчета,
	|	УчетЗатратРегл.КорАналитикаУчетаЗатрат,
	|	УчетЗатратРегл.КорАналитикаУчетаПартий,
	|	УчетЗатратРегл.КорАналитикаРаспределенияЗатрат,
	|	КорРасшифровкаВидаУчета.ПодразделениеОрганизации КАК КорПодразделение,
	|	КорРасшифровкаРаспределенияЗатрат.НоменклатурнаяГруппа КАК КорНоменклатурнаяГруппа
	|ПОМЕСТИТЬ ЗатратыУчаствовалиВРаспределении
	|ИЗ
	|	РегистрНакопления.УчетЗатратРегл КАК УчетЗатратРегл
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаВидаУчета КАК РасшифровкаВидаУчета
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПодразделенияНЗП КАК ПодразделенияНЗП
	|			ПО (РасшифровкаВидаУчета.ПодразделениеОрганизации = ПодразделенияНЗП.Подразделение
	|					ИЛИ РасшифровкаВидаУчета.Подразделение = ПодразделенияНЗП.Подразделение)
	|		ПО УчетЗатратРегл.АналитикаВидаУчета = РасшифровкаВидаУчета.Ссылка
	|			И (РасшифровкаВидаУчета.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчета.Затраты))
	|			И (РасшифровкаВидаУчета.Организация = &Организация)
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаРаспределенияЗатрат КАК РасшифровкаРаспределенияЗатрат
	|		ПО УчетЗатратРегл.АналитикаРаспределенияЗатрат = РасшифровкаРаспределенияЗатрат.Ссылка
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаЗатрат КАК РасшифровкаУчетаЗатрат
	|		ПО УчетЗатратРегл.АналитикаУчетаЗатрат = РасшифровкаУчетаЗатрат.Ссылка
	|			И (РасшифровкаУчетаЗатрат.ХарактерЗатрат = ЗНАЧЕНИЕ(Перечисление.ХарактерЗатрат.ПроизводственныеРасходы))
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаВидаУчета КАК КорРасшифровкаВидаУчета
	|		ПО УчетЗатратРегл.КорАналитикаВидаУчета = КорРасшифровкаВидаУчета.Ссылка
	|			И (КорРасшифровкаВидаУчета.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчета.Затраты))
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаРаспределенияЗатрат КАК КорРасшифровкаРаспределенияЗатрат
	|		ПО УчетЗатратРегл.КорАналитикаРаспределенияЗатрат = КорРасшифровкаРаспределенияЗатрат.Ссылка
	|ГДЕ
	|	УчетЗатратРегл.КодОперации В(&КодыОпераций)
	|	И УчетЗатратРегл.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
	|	И УчетЗатратРегл.Активность
	|	И УчетЗатратРегл.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Месяц, МЕСЯЦ) И КОНЕЦПЕРИОДА(&Месяц, МЕСЯЦ)
	|
	|СГРУППИРОВАТЬ ПО
	|	УчетЗатратРегл.АналитикаУчетаЗатрат,
	|	УчетЗатратРегл.АналитикаВидаУчета,
	|	РасшифровкаРаспределенияЗатрат.НоменклатурнаяГруппа,
	|	РасшифровкаВидаУчета.ПодразделениеОрганизации,
	|	УчетЗатратРегл.АналитикаРаспределенияЗатрат,
	|	УчетЗатратРегл.АналитикаУчетаПартий,
	|	УчетЗатратРегл.КорАналитикаВидаУчета,
	|	УчетЗатратРегл.КорАналитикаУчетаЗатрат,
	|	УчетЗатратРегл.КорАналитикаУчетаПартий,
	|	УчетЗатратРегл.КорАналитикаРаспределенияЗатрат,
	|	КорРасшифровкаВидаУчета.ПодразделениеОрганизации,
	|	КорРасшифровкаРаспределенияЗатрат.НоменклатурнаяГруппа
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	КорПодразделение,
	|	КорНоменклатурнаяГруппа
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ЗатратыУчаствовалиВРаспределении.Подразделение КАК Подразделение,
	|	ЗатратыУчаствовалиВРаспределении.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
	|	ЗатратыУчаствовалиВРаспределении.АналитикаВидаУчета,
	|	ЗатратыУчаствовалиВРаспределении.АналитикаУчетаЗатрат,
	|	ЗатратыУчаствовалиВРаспределении.АналитикаУчетаПартий,
	|	ЗатратыУчаствовалиВРаспределении.АналитикаРаспределенияЗатрат,
	|	ЗатратыУчаствовалиВРаспределении.КорАналитикаВидаУчета,
	|	ЗатратыУчаствовалиВРаспределении.КорАналитикаУчетаЗатрат,
	|	ЗатратыУчаствовалиВРаспределении.КорАналитикаУчетаПартий,
	|	ЗатратыУчаствовалиВРаспределении.КорАналитикаРаспределенияЗатрат,
	|	ЗатратыУчаствовалиВРаспределении.Количество,
	|	ЗатратыУчаствовалиВРаспределении.КоличествоНУ
	|ПОМЕСТИТЬ РаспределенныеЗатраты
	|ИЗ
	|	ЗатратыУчаствовалиВРаспределении КАК ЗатратыУчаствовалиВРаспределении
	|		ЛЕВОЕ СОЕДИНЕНИЕ ОценкаНезавершенногоПроизводства КАК ОценкаНезавершенногоПроизводства
	|		ПО (ОценкаНезавершенногоПроизводства.Подразделение = ЗатратыУчаствовалиВРаспределении.КорПодразделение)
	|			И (ОценкаНезавершенногоПроизводства.НоменклатурнаяГруппа = ЗатратыУчаствовалиВРаспределении.КорНоменклатурнаяГруппа)
	|ГДЕ
	|	ОценкаНезавершенногоПроизводства.Подразделение ЕСТЬ NULL 
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Подразделение,
	|	НоменклатурнаяГруппа
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	РаспределенныеЗатраты.АналитикаВидаУчета,
	|	РаспределенныеЗатраты.АналитикаУчетаЗатрат,
	|	РаспределенныеЗатраты.АналитикаУчетаПартий,
	|	РаспределенныеЗатраты.АналитикаРаспределенияЗатрат,
	|	РаспределенныеЗатраты.КорАналитикаВидаУчета,
	|	РаспределенныеЗатраты.КорАналитикаУчетаЗатрат,
	|	РаспределенныеЗатраты.КорАналитикаУчетаПартий,
	|	РаспределенныеЗатраты.КорАналитикаРаспределенияЗатрат,
	|	- РаспределенныеЗатраты.Количество * ОценкаНезавершенногоПроизводства.ДоляЗатрат / 100 КАК Количество,
	|	- РаспределенныеЗатраты.Количество * ОценкаНезавершенногоПроизводства.ДоляЗатрат / 100 КАК КоличествоНУ
	|	
	|ПОМЕСТИТЬ ТаблицаДвиженийКорректирующихРаспределение
	|ИЗ
	|	ОценкаНезавершенногоПроизводства КАК ОценкаНезавершенногоПроизводства
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РаспределенныеЗатраты КАК РаспределенныеЗатраты
	|		ПО ОценкаНезавершенногоПроизводства.Подразделение = РаспределенныеЗатраты.Подразделение
	|			И ОценкаНезавершенногоПроизводства.НоменклатурнаяГруппа = РаспределенныеЗатраты.НоменклатурнаяГруппа
	|ГДЕ
	|	РаспределенныеЗатраты.Количество <> 0 И ОценкаНезавершенногоПроизводства.ДоляЗатрат <> 0
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ОценкаНезавершенногоПроизводства
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ПодразделенияНЗП
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ЗатратыУчаствовалиВРаспределении
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ РаспределенныеЗатраты");*/
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			//Запрос.УстановитьПараметр("Организация",  Организация);
			//Запрос.УстановитьПараметр("КодыОпераций", КодыОперацийРаспределенияЗатрат());
			//Запрос.УстановитьПараметр("Месяц",        Период);
			//Запрос.Выполнить();
			/*// Теперь сформируем движения, которые 
*/
			/*// - либо приведут к положительному остатку затрат (если в НЗП нужно оставить не все затраты, т.е. распределить только часть затрат)
*/
			/*// - либо устранят последствия распределения (если в НЗП нужно оставить все затраты - т.е. ничего не распределять)
*/
			/*СформироватьДвиженияКорректирующиеРаспределение(
		МенеджерВременныхТаблиц,
		Регистратор,
		Период,
		Регистр);*/
		}
		// Корректирует движения, сформированные при распределении затрат -
		// транспорнтые расходы, относящиеся к остатку нереализованных товаров должны остаться в затратах
		//

		public void УчестьТранспортныеРасходыОтносящиесяКОстаткуНереализованныхТоваров(/*СтруктураШапкиДокумента, Регистр*/)
		{
			//КоэффициентСписанияТранспортныхРасходов = ПроцедурыРасчетаСебестоимостиВыпуска.ПолучитьКоэффициентСписанияТранспортныхРасходов(СтруктураШапкиДокумента);
			if(true/*КоэффициентСписанияТранспортныхРасходов = 0*/)
			{
			}
			//МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
			/*// В соответствии с долей расходов, относящейся к остатку нереализованных товаров,
*/
			/*// cформируем таблицу движений, корректирующих распределение.
*/
			/*Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	АналитикаВидаУчета.Ссылка
	|	
	|ПОМЕСТИТЬ ОтборАналитикаВидаУчета
	|ИЗ
	|	РегистрСведений.АналитикаВидаУчета КАК АналитикаВидаУчета
	|ГДЕ
	|	АналитикаВидаУчета.Организация = &Организация
	|	И АналитикаВидаУчета.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчета.Затраты)
	|;
	|
	|/////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	АналитикаУчетаЗатрат.Ссылка
	|	
	|ПОМЕСТИТЬ ОтборАналитикаУчетаЗатрат
	|ИЗ
	|	РегистрСведений.АналитикаУчетаЗатрат КАК АналитикаУчетаЗатрат
	|ГДЕ
	|	АналитикаУчетаЗатрат.СтатьяЗатрат.ВидРасходовНУ = ЗНАЧЕНИЕ(Перечисление.ВидыРасходовНУ.ТранспортныеРасходы)
	|	И (АналитикаУчетаЗатрат.ХарактерЗатрат = ЗНАЧЕНИЕ(Перечисление.ХарактерЗатрат.КоммерческиеРасходы)
	|		ИЛИ АналитикаУчетаЗатрат.ХарактерЗатрат = ЗНАЧЕНИЕ(Перечисление.ХарактерЗатрат.ИздержкиОбращения))
	|;
	|
	|/////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	УчетЗатратРегл.АналитикаВидаУчета,
	|	УчетЗатратРегл.АналитикаУчетаЗатрат,
	|	УчетЗатратРегл.АналитикаУчетаПартий,
	|	УчетЗатратРегл.АналитикаРаспределенияЗатрат,
	|	УчетЗатратРегл.КорАналитикаВидаУчета,
	|	УчетЗатратРегл.КорАналитикаУчетаЗатрат,
	|	УчетЗатратРегл.КорАналитикаУчетаПартий,
	|	УчетЗатратРегл.КорАналитикаРаспределенияЗатрат,
	|	- (УчетЗатратРегл.Количество * &КоэффициентСписанияТранспортныхРасходов) КАК Количество,
	|	- (УчетЗатратРегл.КоличествоНУ * &КоэффициентСписанияТранспортныхРасходов) КАК КоличествоНУ
	|	
	|ПОМЕСТИТЬ ТаблицаДвиженийКорректирующихРаспределение
	|ИЗ
	|	РегистрНакопления.УчетЗатратРегл КАК УчетЗатратРегл
	|	
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ 
	|		ОтборАналитикаВидаУчета КАК ОтборАналитикаВидаУчета
	|	ПО
	|		УчетЗатратРегл.АналитикаВидаУчета = ОтборАналитикаВидаУчета.Ссылка
	|	
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ 
	|		ОтборАналитикаУчетаЗатрат КАК ОтборАналитикаУчетаЗатрат
	|	ПО
	|		УчетЗатратРегл.АналитикаУчетаЗатрат = ОтборАналитикаУчетаЗатрат.Ссылка
	|	
	|ГДЕ
	|	УчетЗатратРегл.КодОперации В(&КодыОпераций)
	|	И УчетЗатратРегл.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
	|	И УчетЗатратРегл.Активность
	|	И УчетЗатратРегл.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Месяц, МЕСЯЦ) И КОНЕЦПЕРИОДА(&Месяц, МЕСЯЦ)
	|;
	|
	|/////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ОтборАналитикаВидаУчета
	|;
	|
	|/////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ОтборАналитикаУчетаЗатрат");*/
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			//Запрос.УстановитьПараметр("Организация", 									СтруктураШапкиДокумента.Организация);
			//Запрос.УстановитьПараметр("Месяц", 											СтруктураШапкиДокумента.Период);
			//Запрос.УстановитьПараметр("КодыОпераций", 									КодыОперацийРаспределенияЗатрат());
			//Запрос.УстановитьПараметр("КоэффициентСписанияТранспортныхРасходов", 		КоэффициентСписанияТранспортныхРасходов);
			//Запрос.Выполнить();
			/*СформироватьДвиженияКорректирующиеРаспределение(
		МенеджерВременныхТаблиц, 
		СтруктураШапкиДокумента.Ссылка, 
		СтруктураШапкиДокумента.Период, 
		Регистр);*/
		}
		// Процедура формирует сторнирущие движения, корректирующие результат распределения затрат
		//
		// Параметры:
		//  МенеджерВременныхТаблиц - МенеджерВременныхТаблиц - содержит таблицу для формирования корректирующих движений
		//  Регистратор - Ссылка на документ "Расчет себестоимости"
		//  Период	- Дата - период формирования корректирующих движений
		//  Регистр - РегистрНакопленияМенеджер - менеджер регистра учета затрат
		//

		public void СформироватьДвиженияКорректирующиеРаспределение(/*МенеджерВременныхТаблиц, Регистратор, Период, Регистр*/)
		{
			/*Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	ТаблицаДвиженийКорректирующихРаспределение.АналитикаВидаУчета,
	|	ТаблицаДвиженийКорректирующихРаспределение.АналитикаУчетаЗатрат,
	|	ТаблицаДвиженийКорректирующихРаспределение.АналитикаУчетаПартий,
	|	ТаблицаДвиженийКорректирующихРаспределение.АналитикаРаспределенияЗатрат,
	|	ТаблицаДвиженийКорректирующихРаспределение.КорАналитикаВидаУчета,
	|	ТаблицаДвиженийКорректирующихРаспределение.КорАналитикаУчетаЗатрат,
	|	ТаблицаДвиженийКорректирующихРаспределение.КорАналитикаУчетаПартий,
	|	ТаблицаДвиженийКорректирующихРаспределение.КорАналитикаРаспределенияЗатрат,
	|	ТаблицаДвиженийКорректирующихРаспределение.Количество,
	|	ТаблицаДвиженийКорректирующихРаспределение.КоличествоНУ
	|ИЗ
	|	ТаблицаДвиженийКорректирующихРаспределение");*/
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			//РезультатЗапроса = Запрос.Выполнить();
			if(true/*РезультатЗапроса.Пустой()*/)
			{
			}
			//Выборка = РезультатЗапроса.Выбрать();
			//НаборЗаписей = Регистр.СоздатьНаборЗаписей();
			//НаборЗаписей.Отбор.Регистратор.Установить(Регистратор);
			while(true/*Выборка.Следующий()*/)
			{
				//НоваяЗапись = НаборЗаписей.ДобавитьРасход();
				//ЗаполнитьЗначенияСвойств(НоваяЗапись, Выборка);
				/*// Аналитика расходов
*/
				//НоваяЗапись.Период      = Период;
				//НоваяЗапись.Регистратор = Регистратор;
				//НоваяЗапись.КодОперации = КодОперацииРаспределениеЗатратПоАналитике(НоваяЗапись.КорАналитикаВидаУчета);
			}
			/*;
	
	НаборЗаписей.Записать(Ложь);*/
		}
		// ЗАПОЛНЕНИЕ ТАБЛИЦЫ ПРАВИЛ
		// Создает структуру таблицы правил распределения
		//

		public object ИнициализироватьПравилаРаспределения(/**/)
		{
			//ТаблицаПравил = Новый ТаблицаЗначений();
			//ТаблицаПравил.Колонки.Добавить("Наименование", 							Новый ОписаниеТипов("Строка"));
			//ТаблицаПравил.Колонки.Добавить("СпособРаспределения",					Новый ОписаниеТипов("СправочникСсылка.СпособыРаспределенияЗатратНаВыпуск"));
			//ТаблицаПравил.Колонки.Добавить("НаправлениеРаспределения",				Новый ОписаниеТипов("ПеречислениеСсылка.НаправленияРаспределенияЗатрат"));
			//ТаблицаПравил.Колонки.Добавить("РазрезыАналитикиИсточника", 			Новый ОписаниеТипов("Массив"));
			/*// Отборы для источника могут быть заданы
*/
			/*// - пользовательской настройкой СКД
*/
			//ТаблицаПравил.Колонки.Добавить("НастройкиИсточника", 					Новый ОписаниеТипов("ПользовательскиеНастройкиКомпоновкиДанных"));
			/*// - в виде двух связанных соответствий
*/
			//ТаблицаПравил.Колонки.Добавить("ЗначенияОтбораИсточника",               Новый ОписаниеТипов("Соответствие"));
			//ТаблицаПравил.Колонки.Добавить("ВидыОтбораИсточника",                   Новый ОписаниеТипов("Соответствие"));
			/*// Если отборы заданы двумя способами, то они складываются по И
*/
			//ТаблицаПравил.Колонки.Добавить("СхемаКомпоновкиДанныхБазы", 			Новый ОписаниеТипов("СхемаКомпоновкиДанных"));
			/*// СКД с запросом для базы
*/
			//ТаблицаПравил.Колонки.Добавить("НастройкиБазы", 						Новый ОписаниеТипов("ПользовательскиеНастройкиКомпоновкиДанных"));
			/*// Отборы и настройки для базы
*/
			//ТаблицаПравил.Колонки.Добавить("СпособОпределенияАналитикиПолучателя", 	Новый ОписаниеТипов("Соответствие"));
			/*// Правила заполнения аналитики получателя
*/
			/*// Данные базы распределения расчитываются перед выполнением распределения затрат и хранятся вместе с правилами распределения 
*/
			//ТаблицаПравил.Колонки.Добавить("ДанныеБазыРаспределения",				Новый ОписаниеТипов("ТаблицаЗначений"));
			/*// Код операции, с которым выполняются движения (влияет на то, каким образом на основании движений будут формироваться проводки).
*/
			/*// Если не задан, то по умолчанию определяется по ключу "КорАналитикаВидаУчета":
*/
			/*// 	- если тип ключа "Аналитики вида учета", то код операции "СписаниеОХР_Регламент"
*/
			/*// 	- если тип ключа "Аналитики учета прочих затрат", то код операции "СписаниеРасходовНаПродажу"
*/
			//ТаблицаПравил.Колонки.Добавить("КодОперации",							Новый ОписаниеТипов("ПеречислениеСсылка.КодыОперацийЗатраты"));
			return null;
		}
		// Добавляет в таблицу правила, созданные по настройке распределения затрат - из элемента справочника "Настройки распределения затрат"
		//
		// Параметры:
		//  ПравилаРаспределенияЗатрат - таблица значений, созданная функцией ИнициализироватьПравилаРаспределения
		//  НастройкаРаспределенияЗатрат - СправочникСсылка.НастройкиРаспределенияЗатрат
		//

		public void СоздатьПравилаРаспределенияЗатратПоНастройке(/*ПравилаРаспределенияЗатрат, НастройкаРаспределенияЗатрат*/)
		{
			if(true/*НЕ ЗначениеЗаполнено(НастройкаРаспределенияЗатрат)*/)
			{
			}
			//Настройка = НастройкаРаспределенияЗатрат.СпособыРаспределения.Выгрузить();
			/*// В настройке ХарактерЗатрат всегда заполнен. Проверку этого должен обеспечивать сам справочник.
*/
			/*// Правило содержит 
*/
			/*//  Источник - правила отбора затрат
*/
			/*//  Базу - способ распределения
*/
			/*//  Получателя - способы определения аналитики получателя
*/
			/*// Источник нужно будет превратить в отбор.
*/
			/*// Для этого в таблице с настройками заполним служебные колонки.
*/
			//Справочники.НастройкиЗакрытияМесяца.ДобавитьКолонкиОтбораЗатрат(Настройка);
			//ПоляОтбора  = Справочники.НастройкиЗакрытияМесяца.ПоляОтбора();
			/*// Создадим правила: по каждой строке - одно правило
*/
		}
		// Добавляет в таблицу правило для отработки флага учетной политики "Директ-костинг"
		//
		// Параметры:
		//  ПравилаРаспределенияЗатрат - таблица значений, созданная функцией ИнициализироватьПравилаРаспределения
		//

		public void СоздатьПравилоДиректКостинг(/*ПравилаРаспределенияЗатрат, УчетнаяПолитика*/)
		{
			if(true/*НЕ УчетнаяПолитика.ДиректКостинг*/)
			{
			}
			//ХарактерЗатратОбщехозяйственныеРасходы = Перечисления.ХарактерЗатрат.ОбщехозяйственныеРасходы;
			/*// Правило содержит 
*/
			/*//  Источник - правила отбора затрат (все затраты на счете 26)
*/
			/*//  Базу - способ распределения (используем только "По выручке")
*/
			/*//  Получателя - способы определения аналитики получателя (определяются базой)
*/
			//Правило = ПравилаРаспределенияЗатрат.Добавить();
			//Правило.Наименование					= "Директ-костинг";
			//Правило.НаправлениеРаспределения		= Перечисления.НаправленияРаспределенияЗатрат.Результат;
			/*// Источник
*/
			//Правило.РазрезыАналитикиИсточника       = ПолучитьАналитикуУчетаЗатратПоХарактеруЗатрат(ХарактерЗатратОбщехозяйственныеРасходы);
			/*// Отбор задаем в виде соответствий	
*/
			//ВидыОтбораИсточника = Новый Соответствие;
			//ВидыОтбораИсточника.Вставить("ХарактерЗатрат", ВидСравненияКомпоновкиДанных.Равно);
			//ЗначенияОтбораИсточника = Новый Соответствие;
			//ЗначенияОтбораИсточника.Вставить("ХарактерЗатрат", ХарактерЗатратОбщехозяйственныеРасходы);
			//Правило.ВидыОтбораИсточника             = ВидыОтбораИсточника;
			//Правило.ЗначенияОтбораИсточника         = ЗначенияОтбораИсточника;
			//СхемаКомпоновкиДанных = Справочники.СпособыРаспределенияЗатратНаВыпуск.ПолучитьМакет("ДиректКостинг_УчитыватьНоменклатурныеГруппы");
			//Правило.СхемаКомпоновкиДанныхБазы		= СхемаКомпоновкиДанных;
			/*// Получатель
*/
			//Правило.СпособОпределенияАналитикиПолучателя = Новый Соответствие;
			//ПоляБазы = Новый Структура("СчетУчета, СчетУчетаНУ, Субконто1");
			/*//
*/
		}
		// Добавляет в таблицу правило для списания расходов на брак
		//
		// Параметры:
		//  ПравилаРаспределенияЗатрат - таблица значений, созданная функцией ИнициализироватьПравилаРаспределения
		//

		public void СоздатьПравилоБракВПроизводстве(/*ПравилаРаспределенияЗатрат*/)
		{
			/*// Правило содержит 
*/
			/*//  Источник - правила отбора затрат (все затраты на счете 28)
*/
			/*//  Базу - способ распределения (перенос на ту же аналитику 20 счета)
*/
			/*//  Получателя - способы определения аналитики получателя (определяются базой)
*/
			//ХарактерБракВПроизводстве = Перечисления.ХарактерЗатрат.БракВПроизводстве;
			//Правило = ПравилаРаспределенияЗатрат.Добавить();
			//Правило.Наименование					= "Списание расходов на брак";
			//Правило.НаправлениеРаспределения		= Перечисления.НаправленияРаспределенияЗатрат.Затраты;
			/*// Источник
*/
			//Правило.РазрезыАналитикиИсточника       = ПолучитьАналитикуУчетаЗатратПоХарактеруЗатрат(ХарактерБракВПроизводстве);
			//ВидыОтбораИсточника = Новый Соответствие;
			//ВидыОтбораИсточника.Вставить("ХарактерЗатрат", ВидСравненияКомпоновкиДанных.Равно);
			//ЗначенияОтбораИсточника = Новый Соответствие;
			//ЗначенияОтбораИсточника.Вставить("ХарактерЗатрат", ХарактерБракВПроизводстве);
			/*// Отбор задаем в виде соответствий
*/
			//Правило.ВидыОтбораИсточника             = ВидыОтбораИсточника;
			//Правило.ЗначенияОтбораИсточника         = ЗначенияОтбораИсточника;
			//СхемаКомпоновкиДанных = Справочники.СпособыРаспределенияЗатратНаВыпуск.ПолучитьМакет("ПереносНаПроизводственныеРасходы");
			//Правило.СхемаКомпоновкиДанныхБазы		= СхемаКомпоновкиДанных;
			/*// Получатель
*/
			/*// Сгодится общий подход:
*/
			/*//  - всё, что есть в базе берем из базы (это должны быть только СчетУчета, СчетУчетаНУ)
*/
			/*//  - всё остальное - из источника
*/
			/*Правило.СпособОпределенияАналитикиПолучателя = ПолучитьСпособыОпределенияАналитикиПолучателя(
		Правило.СхемаКомпоновкиДанныхБазы,
		Правило.НастройкиБазы,
		Правило.РазрезыАналитикиИсточника);*/
		}
		// Добавляет в таблицу правило для распределения расходов на продажу ("коммерческих")
		//
		// Параметры:
		//  ПравилаРаспределенияЗатрат - таблица значений, созданная функцией ИнициализироватьПравилаРаспределения
		//

		public void СоздатьПравилоРасходыНаПродажу(/*ПравилаРаспределенияЗатрат*/)
		{
			/*// Правило содержит 
*/
			/*//  Источник - правила отбора затрат (все затраты на счете 44)
*/
			/*//  Базу - способ распределения (по выручке)
*/
			/*//  Получателя - способы определения аналитики получателя (определяются базой)
*/
			//Правило = ПравилаРаспределенияЗатрат.Добавить();
			//Правило.Наименование					= "Распределение расходов на продажу";
			//Правило.НаправлениеРаспределения		= Перечисления.НаправленияРаспределенияЗатрат.Результат;
			/*// Источник
*/
			//Правило.РазрезыАналитикиИсточника       = ПолучитьАналитикуУчетаЗатратПоХарактеруЗатрат(Перечисления.ХарактерЗатрат.КоммерческиеРасходы);
			/*// Отбор задаем в виде соответствий
*/
			//ВидыОтбораИсточника = Новый Соответствие;
			//ВидыОтбораИсточника.Вставить("ХарактерЗатрат", ВидСравненияКомпоновкиДанных.ВСписке);
			//ЗначенияОтбораИсточника = Новый Соответствие;
			//ЗначенияОтбораИсточника.Вставить("ХарактерЗатрат", СписокХарактеровЗатратРасходовНаПродажу());
			//Правило.ВидыОтбораИсточника             = ВидыОтбораИсточника;
			//Правило.ЗначенияОтбораИсточника         = ЗначенияОтбораИсточника;
			//СхемаКомпоновкиДанных = Справочники.СпособыРаспределенияЗатратНаВыпуск.ПолучитьМакет("РасходыНаПродажу_УчитыватьНоменклатурныеГруппы");
			//Правило.СхемаКомпоновкиДанныхБазы		= СхемаКомпоновкиДанных;
			/*// Получатель
*/
			//Правило.СпособОпределенияАналитикиПолучателя = Новый Соответствие;
			//ПоляБазы = Новый Структура("СчетУчета, СчетУчетаНУ, Субконто1");
			/*//
*/
		}
		// Добавляет в таблицу правило, которое переносит косвенные затраты на обощенные статьи
		//
		// Параметры:
		//  ПравилаРаспределенияЗатрат - таблица значений, созданная функцией ИнициализироватьПравилаРаспределения
		//

		public void СоздатьПравилоУчитыватьЗатратыНаОбобщенныхСтатьях(/*ПравилаРаспределенияЗатрат, УчетнаяПолитика*/)
		{
			if(true/*УчетнаяПолитика.ДетализацияКосвенныхЗатратВСебестоимости <> Перечисления.ДетализацияКосвенныхЗатратВСебестоимости.ПоФиксированнойСтатьеЗатрат*/)
			{
			}
			/*// Правило содержит 
*/
			/*//  Источник - правила отбора затрат (все косвенные расходы - ОПР, ОХР и брак)
*/
			/*//  Базу - способ распределения (используем специальный способ, который перенесет затраты на статьи, заданные в учетной политике)
*/
			/*//  Получателя - способы определения аналитики получателя (они стандартные)
*/
			//Правило = ПравилаРаспределенияЗатрат.Добавить();
			//Правило.Наименование					   = "Перенос затрат на обобщенные статьи";
			//Правило.НаправлениеРаспределения			= Перечисления.НаправленияРаспределенияЗатрат.Затраты;
			/*// Из источника возьмем всю возможную аналитику, кроме СтатьяЗатрат
*/
			/*// Все ключи аналитики, кроме той, что содержит СтатьяЗатрат останутся неизменными.
*/
			//РазрезыАналитикиИсточника = Новый Массив();
			/*//
*/
			//РазрезыАналитикиИсточника.Добавить("АналитикаВидаУчета");
			//РазрезыАналитикиИсточника.Добавить("АналитикаУчетаПартий");
			//РазрезыАналитикиИсточника.Добавить("АналитикаРаспределенияЗатрат");
			//РазрезыАналитикиИсточника.Добавить("ХарактерЗатрат");
			//РазрезыАналитикиИсточника.Добавить("Затрата");
			//РазрезыАналитикиИсточника.Добавить("ХарактеристикаЗатраты");
			//РазрезыАналитикиИсточника.Добавить("СерияЗатраты");
			//Правило.РазрезыАналитикиИсточника       = РазрезыАналитикиИсточника;
			/*// Отбор задаем в виде структур:
*/
			//Правило.ВидыОтбораИсточника             = Новый Соответствие;
			//Правило.ЗначенияОтбораИсточника         = Новый Соответствие;
			/*// 1 - отбираем косвенные по характеру затрат 
*/
			//КосвенныеРасходы = Новый СписокЗначений;
			//КосвенныеРасходы.Добавить(Перечисления.ХарактерЗатрат.ОбщепроизводственныеРасходы);
			//КосвенныеРасходы.Добавить(Перечисления.ХарактерЗатрат.ОбщехозяйственныеРасходы);
			//КосвенныеРасходы.Добавить(Перечисления.ХарактерЗатрат.БракВПроизводстве);
			//Правило.ВидыОтбораИсточника.Вставить    ("ХарактерЗатрат", ВидСравненияКомпоновкиДанных.ВСписке);
			//Правило.ЗначенияОтбораИсточника.Вставить("ХарактерЗатрат", КосвенныеРасходы);
			/*// 2 - предотвращаем распределение "само на себя"
*/
			//ОбобщенныеСтатьи = Новый СписокЗначений;
			//ОбобщенныеСтатьи.Добавить(УчетнаяПолитика.СтатьяБракВПроизводстве);
			//ОбобщенныеСтатьи.Добавить(УчетнаяПолитика.СтатьяОбщепроизводственныеРасходы);
			//ОбобщенныеСтатьи.Добавить(УчетнаяПолитика.СтатьяОбщехозяйственныеРасходы);
			//Правило.ВидыОтбораИсточника.Вставить    ("СтатьяЗатрат", ВидСравненияКомпоновкиДанных.НеВСписке);
			//Правило.ЗначенияОтбораИсточника.Вставить("СтатьяЗатрат", ОбобщенныеСтатьи);
			//Правило.СхемаКомпоновкиДанныхБазы = Справочники.СпособыРаспределенияЗатратНаВыпуск.ПолучитьМакет("ПереносНаОбобщенныеСтатьи");
			/*// Получатель
*/
			/*// Сгодится общий подход:
*/
			/*//  - всё, что есть в базе берем из базы (это должна быть только статья затрат)
*/
			/*//  - всё остальное - из источника
*/
			/*Правило.СпособОпределенияАналитикиПолучателя = ПолучитьСпособыОпределенияАналитикиПолучателя(
		Правило.СхемаКомпоновкиДанныхБазы,
		Правило.НастройкиБазы,
		Правило.РазрезыАналитикиИсточника);*/
		}
		// Добавляет в таблицу правило для списания нераспределенных расходов на продажу ("коммерческих")
		//
		// Параметры:
		//  ПравилаРаспределенияЗатрат - таблица значений, созданная функцией ИнициализироватьПравилаРаспределения
		//

		public void СоздатьПравилоСписатьНераспределенныеРасходыНаПродажу(/*ПравилаРаспределенияЗатрат*/)
		{
			//Правило = ПравилаРаспределенияЗатрат.Добавить();
			//Правило.Наименование					= "Списание нераспределенных расходов на продажу";
			//Правило.НаправлениеРаспределения		= Перечисления.НаправленияРаспределенияЗатрат.Результат;
			/*// Источник
*/
			//Правило.РазрезыАналитикиИсточника       = ПолучитьАналитикуУчетаЗатратПоХарактеруЗатрат(Перечисления.ХарактерЗатрат.КоммерческиеРасходы);
			/*// Отбор задаем в виде соответствий
*/
			//ВидыОтбораИсточника = Новый Соответствие;
			//ВидыОтбораИсточника.Вставить("ХарактерЗатрат", ВидСравненияКомпоновкиДанных.ВСписке);
			//ВидыОтбораИсточника.Вставить("СтатьяЗатрат.ВидРасходовНУ", ВидСравненияКомпоновкиДанных.НеРавно);
			//ЗначенияОтбораИсточника = Новый Соответствие;
			//ЗначенияОтбораИсточника.Вставить("ХарактерЗатрат", СписокХарактеровЗатратРасходовНаПродажу());
			/*// Транспортные расходы списанию не подлежат
*/
			//ЗначенияОтбораИсточника.Вставить("СтатьяЗатрат.ВидРасходовНУ", Перечисления.ВидыРасходовНУ.ТранспортныеРасходы);
			//Правило.ВидыОтбораИсточника             = ВидыОтбораИсточника;
			//Правило.ЗначенияОтбораИсточника         = ЗначенияОтбораИсточника;
			//СхемаКомпоновкиДанных = Справочники.СпособыРаспределенияЗатратНаВыпуск.ПолучитьМакет("СписатьРасходыНаПродажу");
			//Правило.СхемаКомпоновкиДанныхБазы		= СхемаКомпоновкиДанных;
			/*// Получатель
*/
			//Правило.СпособОпределенияАналитикиПолучателя = Новый Соответствие;
			//ПоляБазы = Новый Структура("СчетУчета, СчетУчетаНУ");
			/*//
*/
		}
		// Добавляет в таблицу правило, которое переносит затраты с 25.03, 26.03, 44.01.3, 44.02.3 на расходы по деятельности, обалагаемой ЕНВД
		//
		// Параметры:
		//  ПравилаРаспределенияЗатрат - таблица значений, созданная функцией ИнициализироватьПравилаРаспределения
		//

		public void СоздатьПравилоПереносНаОблагаемыеЕНВД(/*ПравилаРаспределенияЗатрат, УчетнаяПолитика*/)
		{
			if(true/*НЕ УчетнаяПолитика.ОрганизацияЯвляетсяПлательщикомЕНВД*/)
			{
			}
			/*// Правило содержит 
*/
			/*//  Источник - правила отбора затрат (затраты на счетах 25.03, 26.03, 44.01.3, 44.02.3)
*/
			/*//  Базу - способ распределения (используем только "По выручке")
*/
			/*//  Получателя - способы определения аналитики получателя (они стандартные)
*/
			//Правило = ПравилаРаспределенияЗатрат.Добавить();
			//Правило.Наименование 				= "Перенос на расходы по деятельности, облагаемой ЕНВД";
			//Правило.НаправлениеРаспределения	= Перечисления.НаправленияРаспределенияЗатрат.Затраты;
			/*// Источник
*/
			/*// Разрезы аналитики получим, как для производственных расходов. В этом случае число разрезов максимально.
*/
			//Правило.РазрезыАналитикиИсточника 	= ПолучитьАналитикуУчетаЗатратПоХарактеруЗатрат(Перечисления.ХарактерЗатрат.ПроизводственныеРасходы);
			/*// Отбор задаем в виде соответствий
*/
			//ВидыОтбораИсточника = Новый Соответствие;
			//ВидыОтбораИсточника.Вставить("СчетУчета",		ВидСравненияКомпоновкиДанных.ВСписке);
			//СписокСчетов = Новый СписокЗначений;
			//СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходыРаспределяемые);
			//СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходыРаспределяемые);
			//СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.ИздержкиОбращенияРаспределяемые);
			//СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.КоммерческиеРасходыРаспределяемые);
			//ЗначенияОтбораИсточника = Новый Соответствие;
			//ЗначенияОтбораИсточника.Вставить("СчетУчета", 	СписокСчетов);
			//Правило.ВидыОтбораИсточника     = ВидыОтбораИсточника;
			//Правило.ЗначенияОтбораИсточника = ЗначенияОтбораИсточника;
			//СхемаКомпоновкиДанных = Справочники.СпособыРаспределенияЗатратНаВыпуск.ПолучитьМакет("ПереносНаОблагаемыеЕНВД");
			//Правило.СхемаКомпоновкиДанныхБазы	= СхемаКомпоновкиДанных;
			/*// Получатель
*/
			/*// Сгодится общий подход:
*/
			/*//  - всё, что есть в базе берем из базы (это должны быть только СчетУчета, СчетУчетаНУ)
*/
			/*//  - всё остальное - из источника
*/
			/*Правило.СпособОпределенияАналитикиПолучателя = ПолучитьСпособыОпределенияАналитикиПолучателя(
		Правило.СхемаКомпоновкиДанныхБазы,
		Правило.НастройкиБазы,
		Правило.РазрезыАналитикиИсточника);*/
		}
		// Добавляет в таблицу правило, которое переносит затраты с аналитики счетов учета косвенных расходов на аналитику учета прямых расходов НУ
		//
		// Параметры:
		//  ПравилаРаспределенияЗатрат - таблица значений, созданная функцией ИнициализироватьПравилаРаспределения
		//  УчетнаяПолитика - Структура - учетная политика оргнанизации
		//

		public void СоздатьПравилоПереносНаПрямыеРасходы(/*ПравилаРаспределенияЗатрат, УчетнаяПолитика*/)
		{
			/*// Правило содержит 
*/
			/*//  Источник - правила отбора затрат (затраты на ключах, где СчетУчетаНУ - это счет учета косвенных расходов)
*/
			/*//  Базу - способ распределения (используем специальный способ, который перенесет затраты с ключей учета косвенных расходов НУ на ключи учета прямых расходов)
*/
			/*//  Получателя - способы определения аналитики получателя (они стандартные)
*/
			//Правило = ПравилаРаспределенияЗатрат.Добавить();
			//Правило.Наименование 				= "Перенос затрат на аналитику учета прямых расходов НУ";
			//Правило.НаправлениеРаспределения	= Перечисления.НаправленияРаспределенияЗатрат.Затраты;
			/*// Из источника возьмем всю возможную аналитику.
*/
			/*// Все ключи аналитики кроме АналитикиВидаУчета, содержащей СчетаУчетаНУ, останутся неизменными.
*/
			//РазрезыАналитикиИсточника = Новый Массив();
			//РазрезыАналитикиИсточника.Добавить("АналитикаУчетаЗатрат");
			//РазрезыАналитикиИсточника.Добавить("АналитикаРаспределенияЗатрат");
			//РазрезыАналитикиИсточника.Добавить("АналитикаУчетаПартий");
			//РазрезыАналитикиИсточника.Добавить("СчетУчета");
			//РазрезыАналитикиИсточника.Добавить("СчетУчетаНУ");
			//РазрезыАналитикиИсточника.Добавить("Подразделение");
			//Правило.РазрезыАналитикиИсточника = РазрезыАналитикиИсточника;
			/*// Отбор задаем в виде соответствий
*/
			//ВидыОтбораИсточника = Новый Соответствие;
			//ВидыОтбораИсточника.Вставить("СчетУчетаНУ", ВидСравненияКомпоновкиДанных.ВСписке);
			//СчетаУчетаНУ = ПроцедурыРасчетаСебестоимостиРасширеннаяАналитика.ПолучитьСчетаУчетаКосвенныхРасходовНУ(УчетнаяПолитика);
			//ЗначенияОтбораИсточника = Новый Соответствие;
			//ЗначенияОтбораИсточника.Вставить("СчетУчетаНУ", СчетаУчетаНУ);
			//Правило.ВидыОтбораИсточника     = ВидыОтбораИсточника;
			//Правило.ЗначенияОтбораИсточника = ЗначенияОтбораИсточника;
			/*// Схема, содержащая базу
*/
			//СхемаКомпоновкиДанных = Справочники.СпособыРаспределенияЗатратНаВыпуск.ПолучитьМакет("ПереносНаПрямыеРасходы");
			//Правило.СхемаКомпоновкиДанныхБазы	= СхемаКомпоновкиДанных;
			/*// Проводки по данному правилу должны формироваться особым образом, поэтому используем особый код операции
*/
			//Правило.КодОперации = Перечисления.КодыОперацийЗатраты.ЗакрытиеКосвенныхРасходовНУ;
			/*// Получатель
*/
			/*// Сгодится общий подход:
*/
			/*//  - всё, что есть в базе берем из базы (в данном случае только СчетУчетаНУ)
*/
			/*//  - всё остальное - из источника
*/
			/*Правило.СпособОпределенияАналитикиПолучателя = ПолучитьСпособыОпределенияАналитикиПолучателя(
		Правило.СхемаКомпоновкиДанныхБазы,
		Правило.НастройкиБазы,
		Правило.РазрезыАналитикиИсточника);*/
		}
		// ФУНКЦИИ ОПИСЫВАЮТ СОГЛАШЕНИЯ ...
		// ... В МЕТАДАННЫХ
		// Возвращает код операции, который будет записан в регистры УчетЗатрат
		//

		public object КодОперацииРаспределениеЗатратПоАналитике(/*КорАналитикаВидаУчета = Неопределено*/)
		{
			/*// Код операции должен быть подходящим
*/
			/*// - для корректировки стоимости (стоимость операций с некоторыми кодами не корректируется)
*/
			/*// - для формирования проводок (по операциям с разными кодами формируются проводки разными механизмами)
*/
			if(true/*ТипЗнч(КорАналитикаВидаУчета) = Тип("СправочникСсылка.КлючиАналитикиУчетаПрочихЗатрат")*/)
			{
			}
			return null;
		}
		// Возвращает массив кодов операций, используемых при распределении затрат
		//

		public object КодыОперацийРаспределенияЗатрат(/**/)
		{
			//Результат = Новый Массив;
			//Результат.Добавить(Перечисления.КодыОперацийЗатраты.СписаниеРасходовНаПродажу);
			//Результат.Добавить(Перечисления.КодыОперацийЗатраты.СписаниеОХР_Регламент);
			return null;
		}

		public object ПоддерживаемыеРазрезыАналитикиПолучателя(/**/)
		{
			/*// Разрезы аналитики также перечислены в макетах регистров УчетЗатрат, УчетЗатратРегл
*/
			//Разрезы = Новый Структура();
			/*//АналитикаВидаУчета
*/
			/*//Организация - всё распределение делаем в рамках одной организации
*/
			//Разрезы.Вставить("Подразделение");
			//Разрезы.Вставить("СчетУчета");
			//Разрезы.Вставить("СчетУчетаНУ");
			//Разрезы.Вставить("ЕНВД");
			/*//Разрезы.Вставить("Проект");
*/
			/*//Разрезы.Вставить("Склад");
*/
			/*//АналитикаРаспределенияЗатрат
*/
			//Разрезы.Вставить("НоменклатурнаяГруппа");
			//Разрезы.Вставить("Продукция");
			//Разрезы.Вставить("ХарактеристикаПродукции");
			//Разрезы.Вставить("СерияПродукции");
			/*//АналитикаУчетаЗатрат
*/
			//Разрезы.Вставить("ХарактерЗатрат");
			//Разрезы.Вставить("СтатьяЗатрат");
			/*//Разрезы.Вставить("Затрата");
*/
			/*//Разрезы.Вставить("ХарактеристикаЗатраты");
*/
			/*//Разрезы.Вставить("СерияЗатраты");
*/
			/*//Разрезы.Вставить("Качество");
*/
			/*//АналитикаУчетаПартий
*/
			//Разрезы.Вставить("Заказ");
			/*//Разрезы.Вставить("Комиссионер");
*/
			/*//Разрезы.Вставить("ДоговорКомиссионера");
*/
			/*//Разрезы.Вставить("ДокументПередачи");
*/
			/*//Разрезы.Вставить("ФизЛицо");
*/
			/*//Разрезы.Вставить("НазначениеИспользования");
*/
			/*// Можем распределять прямо на ключи аналитики
*/
			/*// Распределять затраты можем только из одного раздела - Затраты,
*/
			/*// но в разные разделы.
*/
			//Разрезы.Вставить("РазделУчета");
			/*//АналитикаУчетаПрочихЗатрат 
*/
			/*//
*/
			/*//СчетУчета, СчетУчетаНУ - уже есть
*/
			//Разрезы.Вставить("Субконто1");
			//Разрезы.Вставить("Субконто2");
			//Разрезы.Вставить("Субконто3");
			//Разрезы.Вставить("СубконтоНУ1");
			//Разрезы.Вставить("СубконтоНУ2");
			//Разрезы.Вставить("СубконтоНУ3");
			/*//Разрезы.Вставить("ОбъектСтроительства");
*/
			/*//Разрезы.Вставить("СпособСтроительства");
*/
			return null;
		}

		public object КлючиАналитики(/**/)
		{
			/*// ИзмеренияРегистра
*/
			//КлючиАналитики = Новый Структура();
			//КлючиАналитики.Вставить("АналитикаВидаУчета");
			//КлючиАналитики.Вставить("АналитикаРаспределенияЗатрат");
			//КлючиАналитики.Вставить("АналитикаУчетаПартий");
			//КлючиАналитики.Вставить("АналитикаУчетаЗатрат");
			return null;
		}
		// Возвращает список характеров затрат расходов на продажу

		public object СписокХарактеровЗатратРасходовНаПродажу(/**/)
		{
			//СписокРасходовНаПродажу = Новый СписокЗначений();
			//СписокРасходовНаПродажу.Добавить(Перечисления.ХарактерЗатрат.КоммерческиеРасходы);
			//СписокРасходовНаПродажу.Добавить(Перечисления.ХарактерЗатрат.ИздержкиОбращения);
			return null;
		}
		// ... ПРИ ФОРМИРОВАНИИ ПРАВИЛ ПО НАСТРОЙКЕ
		// Возвращает способ определения аналитики в получателе в зависимости от
		// наличия измерений в базе и источнике
		//

		public object ПолучитьСпособыОпределенияАналитикиПолучателя(/*СКДБазы, ПользовательскиеНастройкиБазы, АналитикаИсточника*/)
		{
			//СоответствиеСпособы = Новый Соответствие;
			//НастройкиКомпоновки = ПодготовитьНастройкиКомпоновки(СКДБазы, ПользовательскиеНастройкиБазы);
			//ПоляБазы = Новый Массив;
			return null;
		}
		// Определяет по характеру затрат аналитику затрат в источнике, важную для распределения
		//

		public object ПолучитьАналитикуУчетаЗатратПоХарактеруЗатрат(/*ХарактерЗатрат*/)
		{
			/*//
*/
			//МассивАналитики = Новый Массив();
			//МассивАналитики.Добавить("ЕНВД");
			//МассивАналитики.Добавить("ХарактерЗатрат");
			//МассивАналитики.Добавить("СтатьяЗатрат");
			//МассивАналитики.Добавить("НоменклатурнаяГруппа");
			//МассивАналитики.Добавить("Заказ");
			/*//см. также УчитыватьЗатратыПоПроектам
*/
			if(true/*ХарактерЗатрат = Перечисления.ХарактерЗатрат.ПроизводственныеРасходы*/)
			{
				//МассивАналитики.Добавить("СчетУчета");
				//МассивАналитики.Добавить("Подразделение");
				//МассивАналитики.Добавить("Продукция");
				//МассивАналитики.Добавить("СерияПродукции");
				//МассивАналитики.Добавить("ХарактеристикаПродукции");
				//МассивАналитики.Добавить("Затрата");
				//МассивАналитики.Добавить("ХарактеристикаЗатраты");
				//МассивАналитики.Добавить("СерияЗатраты");
			}
			return null;
		}
		// ... В БАЗАХ РАСПРЕДЕЛЕНИЯ
		// Возвращает список счетов, которые используются только для операций, облагаемых ЕНВД
		//

		public object СчетаЕНВД(/**/)
		{
			//Счета = Новый СписокЗначений();
			/*// В качестве параметра СКД следует использовать список значений
*/
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.ОсновноеПроизводствоОблагаемоеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.ВспомогательныеПроизводстваОблагаемоеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходыОблагаемыеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходыОблагаемыеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.БракВПроизводствеОблагаемоеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.ОбслуживающиеПроизводстваОблагаемоеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.КоммерческиеРасходыОблагаемыеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.ИздержкиОбращенияОблагаемыеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.ВыручкаОблагаемаяЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.СебестоимостьПродажОблагаемаяЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.ПрибылиИУбыткиОблагаемыеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.Продажи_РасходыНаПродажуОблагаемыеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.Продажи_УправленческиеРасходыОблагаемыеЕНВД);
			//Счета.Добавить(ПланыСчетов.Хозрасчетный.ПрочиеРасходыОблагаемыеЕНВД);
			return null;
		}
		// ДРУГИЕ ПРОЦЕДУРЫ РАСПРЕДЕЛЕНИЯ
		// Добавляет запись в протокол. Протокол используется для отладки
		//
		// Параметры:
		//   ТекстСообщения - Строка, информация о выполняемом действии
		//   Протокол - Массив. В него будет добавлена запись
		//   ВестиПротокол - Булево, если Ложь, то запись не будет добавлена.
		//               Используется, если есть опасения, что протокол будет очень большим

		public void ЗаписатьВПротокол(/*ТекстСообщения, Протокол, ВестиПротокол = Истина*/)
		{
			//Протокол.Добавить(ТекстСообщения);
		}
		// Возвращает аналитику получателя согласно способу определения аналитики, который указан в правиле распределения.
		//

		public object ПолучитьАналитикуПолучателя(/*СтрокаБазы, СтрокаИсточника, ПравилоРаспределения, СтруктураШапкиДокумента*/)
		{
			//АналитикаПолучателя = Новый Структура;
			//ВидОтраженияВУчете = Перечисления.ВидыОтраженияВУчете.ОтражатьВРегламентированномУчете;
			/*// Добавим "общую" аналитику
*/
			//АналитикаПолучателя.Вставить("Организация",                  СтруктураШапкиДокумента.Организация);
			/*// Внутри модуля УчетЗатрат ПодразделениеОрганизации не используется - используется только Подразделение
*/
			/*// Это допустимо, потому что оба поля (Подразделение и ПодразделениеОрганизации) не бывают заполнены одновременно.
*/
			/*// При переходе к ключам аналитики нужно обеспечить, чтобы было заполнено нужно поле.
*/
			/*// Заполним оба - процедуры подбора (создания) ключей разберутся, где свои, где чужие.
*/
			if(true/*АналитикаПолучателя.Свойство("Подразделение")*/)
			{
				//АналитикаПолучателя.Вставить("ПодразделениеОрганизации", АналитикаПолучателя.Подразделение);
			}
			/*// Если не все ключи аналитики заполнены, то подберем их, зная значения аналитики
*/
			//ВсеКлючиЗаполнены = Истина;
			if(true/*НЕ ВсеКлючиЗаполнены*/)
			{
				/*// Заполним незаполненные ключи в зависимости от направления распределения
*/
				//НаправлениеРаспределения = ПравилоРаспределения.НаправлениеРаспределения;
				if(true/*НаправлениеРаспределения = Перечисления.НаправленияРаспределенияЗатрат.Результат*/)
				{
					/*// Ключ вида учета должен быть заполнен ключем аналитики прочих затрат, все остальные ключи - пустые
*/
					/*ЗначениеАналитики = РасширеннаяАналитикаУчета.ПолучитьЗначениеКлючаАналитики(
					СтруктураШапкиДокумента,
					АналитикаПолучателя,
					Перечисления.КлючиАналитики.АналитикаУчетаПрочихЗатрат,
					ВидОтраженияВУчете);*/
					//АналитикаПолучателя.Вставить("АналитикаВидаУчета", ЗначениеАналитики);
				}
			}
			/*// Все ключи заполнены
*/
			/*// Очистим ключи аналитики, которые заполняться при данном направлении не должны
*/
			//НеиспользуемыеКлючиАналитики = Новый Структура();
			if(true/*НаправлениеРаспределения = Перечисления.НаправленияРаспределенияЗатрат.Выпуск*/)
			{
				//НеиспользуемыеКлючиАналитики.Вставить("АналитикаУчетаЗатрат");
			}
			return null;
		}
		// Возвращает аналитику в разрезе которой нужно выполнить распределение
		//

		public object ПолучитьРазрезыРаспределения(/*АналитикаИсточника, КолонкиБазы, СпособОпределенияАналитикиПолучателя*/)
		{
			//РазрезыРаспределения = Новый Структура;
			/*// Если необходимо распределить затраты на ту же аналитику, то эта аналитика (по "И")
*/
			/*// 1. Есть как в Источнике, так и в Базе
*/
			/*// 2. В Получателе определяется из Источника 
*/
			/*//    или у Получателя такой аналитики нет совсем
*/
			return null;
		}
		///////////////////////////////////////////////////////////////////////////////
		// ПОЛУЧЕНИЕ ДАННЫХ ПРИ ПОМОЩИ СКД
		// Добавляет отбор в набор отборов компоновщика или группы отборов
		// Функция взята из модуля БСП СтандартныеОтчетыКлиентСервер
		//

		public object ДобавитьОтбор(/*ЭлементСтруктуры, Знач Поле, Значение, ВидСравнения = Неопределено, Использование = Истина, Пользовательский = Ложь*/)
		{
			if(true/*ТипЗнч(Поле) = Тип("Строка")*/)
			{
				//Поле = Новый ПолеКомпоновкиДанных(Поле);
			}
			if(true/*ТипЗнч(ЭлементСтруктуры) = Тип("КомпоновщикНастроекКомпоновкиДанных")*/)
			{
				//Отбор = ЭлементСтруктуры.Настройки.Отбор;
			}
			if(true/*ВидСравнения = Неопределено*/)
			{
				//ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
			}
			//НовыйЭлемент = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
			//НовыйЭлемент.Использование  = Использование;
			//НовыйЭлемент.ЛевоеЗначение  = Поле;
			//НовыйЭлемент.ВидСравнения   = ВидСравнения;
			//НовыйЭлемент.ПравоеЗначение = Значение;
			if(true/*Пользовательский*/)
			{
				//НовыйЭлемент.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
				//НовыйЭлемент.ПредставлениеПользовательскойНастройки = Строка(Поле);
			}
			return null;
		}
		// Возвращает НастройкиКомпоновкиДанных с загруженными настройками по умолчанию из схемы компоновки
		// и примененными пользовательскими настройками
		//

		public object ПодготовитьНастройкиКомпоновки(/*СхемаКомпоновки, ПользовательскиеНастройки*/)
		{
			//КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных;
			//КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновки));
			//КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию);
			if(true/*ПользовательскиеНастройки <> Неопределено*/)
			{
				//КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьПользовательскиеНастройки(ПользовательскиеНастройки);
			}
			/*// Применим пользовательские настройки
*/
			return null;
		}
		// Возвращает данные при помощи СКД
		//
		// Парметры:
		//	СхемаКомпоновки						- Схема компоновки, которая содержит запрос к данным
		//	ПользовательскиеНастройкиКомпоновки - НастройкиКомпоновкиДанных, настройки (отбор), которые установил пользователь
		//	СтруктураПараметров					- Структура, которая содержит значения параметров
		//	СтруктураОтбора						- Структура, которая содержит дополнительный отбор (по периоду, организации и т.д.)
		//	СтруктураВидовСравненияОтбора		- Структура, которая содержит вид сравнения применяемый в отборе
		//
		// Возвращаемое значение
		//	ТаблицаЗначений
		//

		public object ПолучитьДанныеПоСхемеКомпоновки(/*СхемаКомпоновкиДанных, ПользовательскиеНастройки = Неопределено, СтруктураПараметров = Неопределено, СтруктураОтбора = Неопределено, СтруктураВидовСравненияОтбора = Неопределено*/)
		{
			/*// Применим пользовательские настройки
*/
			//НастройкиКомпоновки = ПодготовитьНастройкиКомпоновки(СхемаКомпоновкиДанных, ПользовательскиеНастройки);
			/*// Дальше применим настройки, которые должны "перекрыть" пользовательские
*/
			/*// Установим параметры
*/
			if(true/*СтруктураПараметров <> Неопределено*/)
			{
			}
			/*// Добавим в настройки дополнительный отбор
*/
			if(true/*СтруктураОтбора <> Неопределено*/)
			{
			}
			/*// Отключение вывода общих итогов
*/
			//НастройкиКомпоновки.ПараметрыВывода.УстановитьЗначениеПараметра("ГоризонтальноеРасположениеОбщихИтогов", РасположениеИтоговКомпоновкиДанных.Нет);
			//НастройкиКомпоновки.ПараметрыВывода.УстановитьЗначениеПараметра("ВертикальноеРасположениеОбщихИтогов",   РасположениеИтоговКомпоновкиДанных.Нет);
			/*// Компоновка макета
*/
			//КомпоновщикМакетаКомпоновкиДанных = Новый КомпоновщикМакетаКомпоновкиДанных;
			//МакетКомпоновкиДанных = КомпоновщикМакетаКомпоновкиДанных.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
			/*// Инициализация процессора компоновки
*/
			//ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
			//ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
			/*// Таблица значений, в которую будет получен результат
*/
			//Результат = Новый ТаблицаЗначений;
			/*// Получение результата
*/
			//ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
			//ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.УстановитьОбъект(Результат);
			//ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.Вывести(ПроцессорКомпоновкиДанных);
			return null;
		}
		///////////////////////////////////////////////////////////////////////////////
		// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
		// Возвращает, обязательно ли для переданной настройки использовать упрощенное распределение.
		//
		// Параметры:
		//   НастройкаЗакрытияМесяца - ссылка на настройку
		//
		// Возвращаемое значение:
		//  Истина - следует использовать упрощенное распределение
		//  Ложь - упрощенное распределение можно не использовать
		//

		public object ИспользоватьПростоеРаспределение(/*НастройкаЗакрытияМесяца*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("Ссылка", НастройкаЗакрытияМесяца);
			/*Запрос.Текст =
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	НастройкиЗакрытияМесяцаСпособыРаспределения.Ссылка
	|ИЗ
	|	Справочник.НастройкиЗакрытияМесяца.СпособыРаспределения КАК НастройкиЗакрытияМесяцаСпособыРаспределения
	|ГДЕ
	|	НастройкиЗакрытияМесяцаСпособыРаспределения.Ссылка = &Ссылка
	|	И (НастройкиЗакрытияМесяцаСпособыРаспределения.СпособРаспределения.ИспользоватьПростоеРаспределение
	|		ИЛИ НастройкиЗакрытияМесяцаСпособыРаспределения.СпособРаспределения.ТипБазыРаспределения = ЗНАЧЕНИЕ(Перечисление.ТипыБазРаспределения.Табличный)
	|		ИЛИ НастройкиЗакрытияМесяцаСпособыРаспределения.СпособРаспределения.ТипБазыРаспределения = ЗНАЧЕНИЕ(Перечисление.ТипыБазРаспределения.СКД)
	|		ИЛИ НастройкиЗакрытияМесяцаСпособыРаспределения.НоменклатурнаяГруппа <> ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка))";*/
			return null;
		}
		// Находит способы распределения, которые требуют использовать упрощенное распределение
		//
		// Параметры:
		//   СпособыРаспределения -
		// 	  - массив элементов справочника СпособыРаспределенияЗатратНаВыпуск,
		//      среди которых нужно отобрать способы, требующие использовать
		//      упрощенное распределение
		//    - Неопределено, если следует найти все такие способы
		//
		// Возвращаемое значение:
		//  массив элементов справочника СпособыРаспределенияЗатратНаВыпуск
		//

		public object СпособыТребующиеИспользоватьПростоеРаспределение(/*СпособыРаспределения = Неопределено*/)
		{
			//Запрос = Новый Запрос;
			/*Запрос.Текст =
	"ВЫБРАТЬ
	|	СпособыРаспределения.Ссылка
	|ИЗ
	|	Справочник.СпособыРаспределенияЗатратНаВыпуск КАК СпособыРаспределения
	|ГДЕ
	|	(СпособыРаспределения.ИспользоватьПростоеРаспределение
	|		ИЛИ СпособыРаспределения.ТипБазыРаспределения = ЗНАЧЕНИЕ(Перечисление.ТипыБазРаспределения.Табличный)
	|		ИЛИ СпособыРаспределения.ТипБазыРаспределения = ЗНАЧЕНИЕ(Перечисление.ТипыБазРаспределения.СКД))
	|	И (&ОтборНеТребуется
	|		ИЛИ СпособыРаспределения.Ссылка В (&СпособыРаспределения))";*/
			//Запрос.УстановитьПараметр("СпособыРаспределения", СпособыРаспределения);
			//Запрос.УстановитьПараметр("ОтборНеТребуется",     СпособыРаспределения = Неопределено);
			return null;
		}
		// Заменяет в тексте сообщения шаблоны на номера строк из массива номеров
		// Используется для формирования текста сообщения при проверки
		// корректности заполнения способов распределения и настроек закрытия месяца
		//
		// Параметры:
		//  ТекстСообщения - строка, содержащая текст сообщения с шаблонами %Строках и %НомераСтрок
		//  МассивНомеров  - массив номеров строк
		//
		// Возвращаемое значение:
		//	Измененный параметр ТекстСообщения
		//

		public void ДобавитьВТекстСообщенияНомераСтрок(/*ТекстСообщения, МассивНомеров*/)
		{
			/*ТекстСообщения = СтрЗаменить(
		ТекстСообщения,
		"%Строках",
		?(МассивНомеров.Количество() = 1,
			"строке",
			"строках"));*/
			/*ТекстСообщения = СтрЗаменить(
		ТекстСообщения,
		"%НомераСтрок",
		СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(МассивНомеров));*/
		}
	}
}
